home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Sample Code / AOCE Sample Code / PowerTalk Access Modules / Sample CSAM / Sources / SKEL•Prox.C < prev    next >
Encoding:
Text File  |  1995-07-28  |  10.1 KB  |  333 lines  |  [TEXT/MPS ]

  1. // Copyright (c) 1993 Regents of the University of Michigan. All rights reserved.
  2.  
  3. /* ==========================================================================
  4.     Procs, Parse & Authi routines for the Dixie DSAM.
  5.  
  6.     Written by: Gavin Eadie • The University of Michigan Information Systems
  7.           Phone: (313) 936-0816
  8.      AppleLink: A67
  9.       Internet: gavin@umich.edu
  10.          
  11.         History:    Sep08/92             Split off from dixieDSAM.c (Gav)
  12.                     Dec17/92    1.0a8        Progress gets made !! (Gav)
  13.                     Jan04/93    1.0a10    First try with AOCE a13 ... Gav
  14.                     Jan13/93    1.0a12    First functioning with a13 ... Gav
  15.                     Jan27/93    1.0a14    Revisions for AOCE 1.0a14 ... Gav
  16.                     Mar10/93    1.0a16    all MacsBug calls removed ... Gav
  17.                     Mar16/93 1.0a17    revisions for AOCE 1.0b1 ... Gav
  18.                     Mar25/93 1.0a19    don't open IP path at boot time; wait for
  19.                                             the first user action that needs it ... Gav
  20.                     Jun16/93 1.0a26    ask for enumerated information one record
  21.                                             at a time ... Gav
  22.                     Jul12/93 1.0a33    take «ldapServerName» & «ldapSearchBase»
  23.                                             from Setup Catalog ... Gav
  24.                     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  25.                     Jul26/93 1.0b1        "Find" works ... Gav
  26.  
  27.     ==========================================================================    */
  28.  
  29.  
  30. #include "Headers.h"
  31.  
  32. #define Parts_Max 8
  33.  
  34. void Match_to_Target(RStringPtr , DirMatchWith , DirEnumChoices, char * );
  35.  
  36. /* ==========================================================================
  37.         Dir_Procs • ....
  38.         
  39.     --------------------------------------------------------------------------    */
  40. OSErr Dir_Procs(MyDashGlobals * dGlobals, DirParamBlockPtr ds_PB) {
  41.     OSErr        Cat_Error = kOCEParamErr;
  42.  
  43.     switch (ds_PB->header.reqCode) {
  44. //    --------------------------------------------------------------------------
  45. //
  46. //        D I R E C T O R Y     I N F O R M A T I O N
  47. //
  48. //    --------------------------------------------------------------------------
  49. //
  50.         case kDirAddDSAMDirectory:
  51.             Audit_PString('PROX', "\pkDirAddDSAMDirectory");
  52.             Audit_RString('dir:', ds_PB->addDSAMDirectoryPB.directoryName);
  53.     
  54.             dGlobals->CSAM_CID = ds_PB->addDSAMDirectoryPB.dsamRecordCID;
  55.             dGlobals->Cat_CID = ds_PB->addDSAMDirectoryPB.directoryRecordCID;
  56.             OCECopyRString((RStringPtr)ds_PB->addDSAMDirectoryPB.directoryName,
  57.                                 (RStringPtr)&dGlobals->Cat_Name, kDirectoryNameMaxBytes);
  58.             dGlobals->Cat_Disc = ds_PB->addDSAMDirectoryPB.discriminator;
  59.  
  60.             Cat_Error = noErr;
  61.             break;
  62.  
  63. //    --------------------------------------------------------------------------
  64. //
  65.         case kDirGetDirectoryInfo:
  66.             Audit_PString('PROX', "\pkDirGetDirectoryInfo");
  67.  
  68.             Cat_Error = noErr;
  69.             break;
  70.  
  71. //    --------------------------------------------------------------------------
  72. //
  73.         case kDirGetDirectoryIcon: {
  74.             short i;
  75.  
  76.             Audit_PString('PROX', "\pkDirGetDirectoryIcon");
  77.  
  78.             for (i = 0; i < iconCount; i++) {
  79.                 if (ds_PB->getDirectoryIconPB.iconType == dGlobals->Icon[i].iconType &&
  80.                      dGlobals->Icon[i].iconHandle != nil) {
  81.                     BlockMove(*dGlobals->Icon[i].iconHandle,
  82.                                  ds_PB->getDirectoryIconPB.iconBuffer,
  83.                                  dGlobals->Icon[i].iconLength);
  84.                     Cat_Error = noErr;
  85.                     break;
  86.                 }
  87.             }
  88.  
  89.             break;
  90.         }
  91.  
  92.  
  93. //    --------------------------------------------------------------------------
  94. //
  95. //        D N O D E     I N F O R M A T I O N
  96. //
  97. //    --------------------------------------------------------------------------
  98. //
  99.         case kDirGetDNodeAccessControlGet:
  100.             Audit_PString('PROX', "\pkDirGetDNodeAccessControlGet");
  101.  
  102.             Cat_Error = noErr;
  103.             break;
  104.  
  105. //    --------------------------------------------------------------------------
  106. //
  107.         case kDirGetDNodeMetaInfo:
  108.             Audit_PString('PROX', "\pkDirGetDNodeMetaInfo");
  109.  
  110.             ds_PB->getDNodeMetaInfoPB.metaInfo.info[0] = 0;
  111.             ds_PB->getDNodeMetaInfoPB.metaInfo.info[1] = 0;
  112.             ds_PB->getDNodeMetaInfoPB.metaInfo.info[2] = 0;
  113.             ds_PB->getDNodeMetaInfoPB.metaInfo.info[3] = 0;
  114.  
  115.             Cat_Error = noErr;
  116.             break;
  117.             
  118.  
  119. //    --------------------------------------------------------------------------
  120. //
  121. //        R E C O R D     I N F O R M A T I O N
  122. //
  123. //    --------------------------------------------------------------------------
  124. //
  125.         case kDirAddRecord:
  126.             Audit_PString('PROX', "\pkDirAddRecord");
  127.  
  128.             OCESetCreationIDtoNull(&ds_PB->addRecordPB.aRecord->local.cid);
  129.  
  130.             Cat_Error = noErr;
  131.             break;
  132.         
  133. //    --------------------------------------------------------------------------
  134. //
  135.         case kDirDeleteRecord:
  136.             Audit_PString('PROX', "\pkDirDeleteRecord");
  137.             
  138.             break;
  139.  
  140. //    --------------------------------------------------------------------------
  141. //
  142.         case kDirEnumerateGet: {
  143.             Audit_PString('PROX', "\pkDirEnumerateGet");
  144.  
  145. //    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  146. //        audit startingPoint and match criteria
  147. //    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  148.             if (nil == ds_PB->enumerateGetPB.startingPoint)
  149.                 Audit_PString('strt', "\p <none>");
  150.             else {
  151.                 Audit_PString('strt', "\p <next>");
  152.                 Audit_LocalRecordID(&ds_PB->enumerateGetPB.startingPoint->u.recordIdentifier);
  153.             }
  154.             
  155.             Audit_RString('Name', ds_PB->enumerateGetPB.nameMatchString);
  156.             Audit_Number('Nam?', ds_PB->enumerateGetPB.matchNameHow);
  157.             Audit_Number('Typ?', ds_PB->enumerateGetPB.matchTypeHow);
  158.             Audit_Number('eNum', ds_PB->enumerateGetPB.enumFlags);
  159.             
  160.             Audit_AttrType_List(ds_PB->enumerateGetPB.typesList, ds_PB->enumerateGetPB.typeCount);
  161.             
  162. //    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  163. //        set the sorting script, language, region and version (slrv) ...
  164. //    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  165.             ds_PB->enumerateGetPB.responseSLRV.script = smRoman;
  166.             ds_PB->enumerateGetPB.responseSLRV.language = langEnglish;
  167.             ds_PB->enumerateGetPB.responseSLRV.regionCode = 0;        // verUS;
  168.             ds_PB->enumerateGetPB.responseSLRV.version = 0;
  169.  
  170.             break;
  171.         }
  172.  
  173. //    --------------------------------------------------------------------------
  174. //
  175.         case kDirFindRecordGet: {
  176.             Audit_PString('PROX', "\pkDirFindRecordGet");
  177.             Audit_RString('dir:', ds_PB->findRecordGetPB.directoryName);
  178.  
  179.             Audit_RecordID(ds_PB->findRecordGetPB.startingPoint);
  180.  
  181. //    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  182. //        log the name and the type list, plus ancilliary information ...
  183. //    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  184.             Audit_RString('Name', ds_PB->findRecordGetPB.nameMatchString);
  185.             Audit_Number('Nam?', ds_PB->findRecordGetPB.matchNameHow);
  186.             Audit_Number('Typ?', ds_PB->enumerateGetPB.matchTypeHow);
  187.  
  188.             Audit_AttrType_List(ds_PB->findRecordGetPB.typesList, ds_PB->findRecordGetPB.typeCount);
  189.  
  190.             break;
  191.         }
  192.  
  193. //    --------------------------------------------------------------------------
  194. //
  195.         case kDirLookupGet: {
  196.             Audit_PString('PROX', "\pkDirLookupGet");
  197.  
  198.             Audit_AttrType_List((RStringPtr *)ds_PB->lookupGetPB.attrTypeList, ds_PB->lookupGetPB.attrTypeCount);
  199.             Audit_Attribute(&ds_PB->lookupGetPB.startingAttribute);
  200.  
  201.             break;
  202.         }
  203.             
  204. //    --------------------------------------------------------------------------
  205. //
  206.         case kDirGetRecordAccessControlGet:
  207.             Audit_PString('PROX', "\pkDirGetRecordAccessControlGet");
  208.  
  209.             Cat_Error = noErr;
  210.             break;
  211.             
  212. //    --------------------------------------------------------------------------
  213. //
  214.         case kDirGetRecordMetaInfo:
  215.             Audit_PString('PROX', "\pkDirGetRecordMetaInfo");
  216.  
  217.             ds_PB->getRecordMetaInfoPB.metaInfo.info[0] = 0;
  218.             ds_PB->getRecordMetaInfoPB.metaInfo.info[1] = 0;
  219.             ds_PB->getRecordMetaInfoPB.metaInfo.info[2] = 0;
  220.             ds_PB->getRecordMetaInfoPB.metaInfo.info[3] = 0;
  221.             
  222.             Cat_Error = noErr;
  223.             break;
  224.             
  225. //    --------------------------------------------------------------------------
  226. //
  227.         case kDirGetNameAndType:
  228.             Audit_PString('PROX', "\pkDirGetNameAndType");
  229.  
  230.             break;
  231.  
  232. //    --------------------------------------------------------------------------
  233. //
  234.         case kDirSetNameAndType:
  235.             Audit_PString('PROX', "\pkDirSetNameAndType");
  236.  
  237.             break;
  238.         
  239.  
  240. //    --------------------------------------------------------------------------
  241. //
  242. //        A T T R I B U T E     I N F O R M A T I O N
  243. //
  244. //    --------------------------------------------------------------------------
  245. //
  246.         case kDirAddAttributeValue:
  247.             Audit_PString('PROX', "\pkDirAddAttributeValue");
  248.  
  249.             break;
  250.  
  251. //    --------------------------------------------------------------------------
  252. //
  253.         case kDirDeleteAttributeValue:
  254.             Audit_PString('PROX', "\pkDirDeleteAttributeValue");
  255.  
  256.             break;
  257.             
  258. //    --------------------------------------------------------------------------
  259. //
  260.         case kDirChangeAttributeValue:
  261.             Audit_PString('PROX', "\pkDirChangeAttributeValue");
  262.  
  263.             break;
  264.             
  265. //    --------------------------------------------------------------------------
  266. //
  267.         case kDirVerifyAttributeValue:
  268.             Audit_PString('PROX', "\pkDirVerifyAttributeValue");
  269.  
  270.             break;
  271.     
  272. //    --------------------------------------------------------------------------
  273. //
  274.         case kDirEnumerateAttributeTypesGet:
  275.             Audit_PString('PROX', "\pkDirEnumerateAttributeTypesGet");
  276.  
  277.             if (nil == ds_PB->enumerateAttributeTypesGetPB.startingAttrType)
  278.                 Audit_PString('strt', "\p <none>");
  279.             else
  280.                 Audit_RString('strt', ds_PB->enumerateAttributeTypesGetPB.startingAttrType);
  281.  
  282.             Cat_Error = noErr;
  283.             break;
  284.  
  285. //    --------------------------------------------------------------------------
  286. //
  287.         case kDirGetAttributeAccessControlGet:
  288.             Audit_PString('PROX', "\pkDirGetAttributeAccessControlGet");
  289.  
  290.             Cat_Error = noErr;
  291.             break;
  292.  
  293. //    --------------------------------------------------------------------------
  294. //
  295.         case kDirDeleteAttributeType:
  296.             Audit_PString('PROX', "\pkDirDeleteAttributeType");
  297.  
  298.             break;
  299.  
  300. //    --------------------------------------------------------------------------
  301. //
  302. //        A L I A S     I N F O R M A T I O N
  303. //
  304. //    --------------------------------------------------------------------------
  305. //
  306.         case kDirAddAlias:
  307.             Audit_PString('PROX', "\pkDirAddAlias");
  308.  
  309.             break;
  310.         
  311.  
  312. //    --------------------------------------------------------------------------
  313. //
  314. //        M I S C E L L A N I O U S     I N F O R M A T I O N
  315. //
  316. //    --------------------------------------------------------------------------
  317. //
  318.         case kDirAbort:
  319.             Audit_PString('PROX', "\pkDirAbort");
  320.  
  321.             break;
  322.  
  323.  
  324. //    --------------------------------------------------------------------------
  325. //
  326.         default:
  327.             Audit_PString('PROX', "\p< unknown >");
  328.             Cat_Error = kOCEParamErr;
  329.     }
  330.     
  331.     return (Cat_Error);
  332. }
  333.